import request from '@/config/axios'

export interface PermissionVO {
  id?: number // 数据权限编号
  userId: number // 用户编号
  bizType: number // Crm 类型
  bizId: number // Crm 类型数据编号
  level: number // 权限级别
  toBizTypes?: number[] // 同时添加至
  deptName?: string // 部门名称
  nickname?: string // 用户昵称
  postNames?: string[] // 岗位名称数组
  createTime?: Date
  ids?: number[]
}

export interface TransferReqVO {
  id: number // 模块编号
  newOwnerUserId: number // 新负责人的用户编号
  oldOwnerPermissionLevel?: number // 老负责人加入团队后的权限级别
  toBizTypes?: number[] // 转移客户时，需要额外有【联系人】【商机】【合同】的 checkbox 选择
}

/**
 * CRM 业务类型枚举
 *
 * @author HUIHUI
 */
export enum BizTypeEnum {
  CRM_CLUE = 1, // 线索
  CRM_CUSTOMER = 2, // 客户
  CRM_CONTACT = 3, // 联系人
  CRM_BUSINESS = 4, // 商机
  CRM_CONTRACT = 5, // 合同
  CRM_PRODUCT = 6, // 产品
  CRM_RECEIVABLE = 7, // 回款
  CRM_RECEIVABLE_PLAN = 8, // 回款计划
  
  CRM_PROJECT = 9, // 客户项目信息
  CRM_PROJECT_ENERGY = 10, // 客户项目信息能源报装类别
  CRM_PROJECT_PRODUCTION = 11, // 客户项目信息生产线建设现状
  CRM_PROJECT_WORKSHOP = 12, // 客户项目信息车间生产线图纸资料
  CRM_PROJECT_ELECTRIC = 13, // 客户项目信息电气方案图纸资料
  CRM_PROJECT_PIPELINE = 14, // 客户项目信息废水管道方案图纸资料
  CRM_PROJECT_GAS = 15, // 客户项目信息废气治理方案图纸资料
  CRM_PROJECT_OTHER = 16, // 客户项目信息其他工程方案图纸资料
  CRM_PROJECT_CHECK = 17, // 客户项目信息项目验收资料
  CRM_BUSINESSINFO = 18, // 客户工商信息
  CRM_COMPLIANCE = 19, //客户合规性信息
  CRM_COMPLIANCE_DRUGS = 20, //客户合规性信息剧毒品管理
  CRM_COMPLIANCE_PDE = 21, //客户合规性信息易制毒、易制爆管理
  CRM_COMPLIANCE_PROCEDURES = 22, //客户合规性信息合规性手续
  CRM_ENVIRONMENT = 23, //客户环保信息
  CRM_ENVIRONMENT_HIGHWASTEWATER = 24, //客户环保信息高浓废液
  CRM_ENVIRONMENT_WASTE = 25, //客户环保信息危废信息
  CRM_ENVIRONMENT_WASTEWAREHOUSE = 26, //客户环保信息危废仓库
  CRM_ENVIRONMENT_WASTEGAS = 27, //客户环保信息废气信息
  CRM_ENVIRONMENT_WASTEWATER = 28, //客户环保信息废水信息
  CRM_DANGER = 29, //客户危险源信息
  CRM_TECHDEFENSE_MANAGE = 30, //客户危险源信息危险源/重点消防部位管理信息
  CRM_COMPLIANCE_OPERATOR = 31, //客户危险源信息特种/危险作业人员信息
  CRM_CHEMICALS = 32, //客户化学品信息
  CRM_CHEMICALS_REGISTER = 33, //客户化学品信息登记表
  CRM_TECHDEFENSE = 34, //客户技防信息
  CRM_TECHDEFENSE_ELECTRICAL = 35, //客户技防信息用电探测装置安装情况
  CRM_TECHDEFENSE_GAS = 36, //客户技防信息可燃气体探测器安装情况
  CRM_TECHDEFENSE_HCN = 37, //客户技防信息氰化氢气体检测安装情况
  CRM_TECHDEFENSE_SMOKE = 38, //客户技防信息烟感安装情况
  CRM_PATENT_ITEMS = 39, //客户专利信息
  CRM_COMPLIANCE_ADMIN = 40, //客户安全生产生产管理员信息
  CRM_COMPLIANCE_INCHARGE = 41, //客户安全生产管理员信息
  CRM_INSURANCEINFO = 42, //客户保险信息
  CRM_MAINSOURCEINFO = 43, //客户客源信息
  CRM_BUSINESSINFO_SHAREHOLDER = 44, //客户工商信息股东信息明细
  CRM_DISCHARGE_ITEMS = 45, //客户生产排污信息明细
  CRM_COMPLIANCE_SPECIAL_EQUIPMENT = 46 //客户合规性信息特殊设备
}

/**
 * CRM 数据权限级别枚举
 */
export enum PermissionLevelEnum {
  OWNER = 1, // 负责人
  READ = 2, // 只读
  WRITE = 3 // 读写
}

// 获得数据权限列表（查询团队成员列表）
export const getPermissionList = async (params) => {
  return await request.get({ url: `/crm/permission/list`, params })
}

// 创建数据权限（新增团队成员）
export const createPermission = async (data: PermissionVO) => {
  return await request.post({ url: `/crm/permission/create`, data })
}

// 编辑数据权限（修改团队成员权限级别）
export const updatePermission = async (data) => {
  return await request.put({ url: `/crm/permission/update`, data })
}

// 删除数据权限（删除团队成员）
export const deletePermissionBatch = async (val: number[]) => {
  return await request.delete({ url: '/crm/permission/delete?ids=' + val.join(',') })
}

// 删除自己的数据权限（退出团队）
export const deleteSelfPermission = async (id: number) => {
  return await request.delete({ url: '/crm/permission/delete-self?id=' + id })
}
